package com.yike.user.service;

import com.lkl.laop.sdk.exception.SDKException;
import com.yike.common.api.ApiResult;
import com.yike.common.entity.ShopSplit;
import com.yike.common.pagination.Paging;
import com.yike.common.request.ApplyForSepAccReq;
import com.yike.common.vo.ShopSplitVo;
import com.yike.user.lkl.incoming.push.MerchantAudit;
import com.yike.user.lkl.incoming.push.MerchantModification;
import com.yike.user.param.CustomerPageParam;
import com.yike.user.param.MerchantParam;
import com.yike.user.param.PlatformShopPageParam;
import com.yike.user.param.PlatformShopParam;
import com.yike.user.vo.CustomerVo;
import com.yike.user.vo.PlatformShopVo;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * 平台用户 服务类
 *
 * @author Sakura
 * @since 2024-10-29
 */
public interface PlatformShopService {

    /**
     * 保存
     *
     * @param platformShopParam
     * @return
     * @throws Exception
     */
    ApiResult<String> saveShop(PlatformShopParam platformShopParam) throws Exception;

    /**
     * 修改
     *
     * @param platformShopParam
     * @return
     * @throws Exception
     */
    ApiResult<String> updateShop(PlatformShopParam platformShopParam) throws Exception;

    /**
     * 删除
     *
     * @param id
     * @return
     * @throws Exception
     */
    boolean deleteShop(Long id) throws Exception;

    boolean batchDel(List<Long> ids) throws Exception;

    PlatformShopVo getShop(Long id) throws Exception;

    Paging<PlatformShopVo> getShopPageList(PlatformShopPageParam platformShopPageParam) throws Exception;


    /**
     * 保存
     *
     * @param platformShopParam
     * @return
     * @throws Exception
     */
    void updateLklShop(MerchantAudit platformShopParam) throws Exception;


    void updateLklShopUp(MerchantModification param) throws Exception;



    ApiResult<String> applyForSepAcc(ApplyForSepAccReq req) throws SDKException, IOException;

    ApiResult<ShopSplitVo> getApplyForSepAcc(String shopId) ;


    ApiResult<String> applyBind(String shopId) throws SDKException, IOException;



    Map<String ,Object> applyLedgerMerNot(String body) throws SDKException, IOException;
    Map<String ,Object> applyLedgerMerUpdateNot(String body) throws SDKException, IOException;
    Map<String ,Object> applyBindNot(String body) throws SDKException, IOException;


}
